import java.io.File;


public class Archivo implements ValidarArchivo{
	Layout l;
	String nombre,ruta;
	File archivo;
	ValidaTipoDato vtd=new ValidaTipoDato();
	TipoCampo c;
	
	public boolean isExist(){
		
		return archivo.exists();
	}
	public void creaArchivo(){
		archivo= new File(this.ruta);
	}
	public Layout getL() {
		return l;
	}
	public void setL(Layout l) {
		this.l = l;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getRuta() {
		return ruta;
	}
	public void setRuta(String ruta) {
		this.ruta = ruta;
	}
	public File getArchivo() {
		return archivo;
	}
	public void setArchivo(File archivo) {
		this.archivo = archivo;
	}
	
	public boolean validarArchivo(String linea) {
		boolean value=false;
	    if(l.getTipoLayout()==tipo.SEPARADOR){
	     String [] cad= linea.split(""+l.getSeparador());
	     System.out.println(l.getSeparador());
	     for(int i=0;i<cad.length;i++){
	    	 System.out.println(cad[i]);
	     }
	     System.out.println("Cadena: "+cad.length+"Layout: "+l.getCampos().size());
	     if(cad.length== l.getCampos().size()){
	     for(int i=0; i<cad.length;i++){
	    	 System.out.println("Compara tipo: "+l.getCampo(i).getTipo());
	    	 switch (l.getCampo(i).getTipo()){
	    	 case INT:{
	    		 System.out.println("int");
	    		if( vtd.validarInt(cad[i]))
	    			value=true;
	    		else
	    			value=false;
	    	        } break;
	    	 case STRING:{
	    		 System.out.println("string");
	    		 if( vtd.validarString(cad[i]))
		    			value=true;
		    		else
		    			value=false;
		    	        } break;
	    	 case DOUBLE:{
	    		 System.out.println("double");
	    		 if( vtd.validarDouble(cad[i]))
		    			value=true;
		    		else
		    			value=false;
		    	        } break;
	    	 case DATE:{
	    		 System.out.println("date");
	    		 if( vtd.validarFormatoFecha(cad[i]))
		    			value=true;
		    		else
		    			value=false;
		    	        } break;
		     default:
		    	 break;
	    	 } 
	     }	
	    	
	    }
	  }else if(l.getTipoLayout()==tipo.POSFIJA){
		  int longitudLayout=0;
		  for(int j=0;j<l.getCampos().size();j++)
			  longitudLayout+=l.getCampo(j).getLongitud();
		  System.out.println("Cadena: "+linea.length()+"Layout: "+longitudLayout);
		  if(linea.length()== longitudLayout){
		  	for(int i=0;i<l.getCampos().size();i++){
		  		int inicio=l.getCampo(i).getPosicionInicial();
		  		int ultimo=inicio+l.getCampo(i).getLongitud();
		  		System.out.println(linea.substring(inicio,ultimo));
		  		String bloque=linea.substring(inicio,ultimo);
		  		switch (l.getCampo(i).getTipo()){
		    	 case INT:{
		    		 System.out.println("int");
		    		if( vtd.validarInt(bloque))
		    			value=true;
		    		else
		    			value=false;
		    	        } break;
		    	 case STRING:{
		    		 System.out.println("string");
		    		 if( vtd.validarString(bloque))
			    			value=true;
			    		else
			    			value=false;
			    	        } break;
		    	 case DOUBLE:{
		    		 System.out.println("double");
		    		 if( vtd.validarDouble(bloque))
			    			value=true;
			    		else
			    			value=false;
			    	        } break;
		    	 case DATE:{
		    		 System.out.println("date");
		    		 if( vtd.validarFormatoFecha(bloque))
			    			value=true;
			    		else
			    			value=false;
			    	        } break;
			     default:
			    	 break;
		    	 } 
		  	}
	  }
	}else
		  value=false;
		return value;
	}
}
